[小ネタ]東京メトロのサイトをスクレイピングして、マイメトロマップを作ってみた!
突然ですが、、私は地図とか電車の路線図を眺めるのが好きです。なので(?)Alteryxの勉強がてらAlteryxとTableauを使って東京メトロの路線図マップを作ってみました!本記事ではその手順について紹介いたします。
まずは電車偏愛を少し語る
東京メトロで一番好きな路線は何ですか?私は銀座線です。しかし電車詳しいとはとても言い難く、好きな理由は単純で、他の路線と接続していないからです!!銀座線が他の路線と接続していないのには色んな事情があるとは思うのですが、なんかオンリーワンな感じでただカッコイイって理由だけで好きです。それなら丸の内線もそうじゃないか!って思うのですが、他にも理由があって、銀座線に乗るときはいつもあの黄色い車両が現れて、ごくたまにレトロな内装の旧1000形仕様の車両に乗れた時はテンション上がりますよね。あと、車両間の扉に貼ってある、停車駅をイメージしたシールもかわいいですよね。特にパンダ。。
気を取り直してさっそくやっていく!
全体手順
今回はこちらのサイトから地図情報と緯度経度の情報を利用いたしました。
●駅の地点情報:東京メトロサイト
●緯度経度情報:CSISシンプルジオコーディング実験
手順1:(Alteryx)東京メトロサイトから、東京メトロ各路線の駅情報を取得
手順2:(Alteryx)取得した駅情報から、さらに駅の住所情報を取得
手順3:(Alteryx)住所情報から、緯度経度を取得
手順4:(Tableau)緯度経度、路線情報を組み合わせて可視化
手順1:Alteryxで東京メトロサイトから、東京メトロ各路線の駅情報を取得
まずは以下の通り、東京メトロ全9路線の路線名とサイトURL情報をテキスト入力しました。このURLに対して、WEBスクレイピングを実施していきます。
ダウンロードツールを使用してHTMLを抽出
まずはサイトのHTMLを取得するために、先ほどのテキスト入力ツールに、開発者タブからダウンロードツールを接続し設定していきます。
次に取得したHTMLを見やすくするために、改行毎で行に分割していきたいと思います。パースタブから、列分割ツールを接続し以下の通り設定します。
HTMLから必要な情報を抽出
ここまで完了したら、実際に取得したHTMLから欲しい情報を取得するためにサイトのHTMLの構造を確認しておきます。
次は確認したHTML情報を抽出するために、パースタブから正規表現ツールを設定していきます。取得したい情報が入っているHTMLの中から、ピンポイントで欲しい情報を正規表現で解析することで別のフィールドに出力する、という設定を行うことで、情報を抜き出していきます。
銀座線の渋谷駅を例にあげると、取得したい駅ページと駅名の記載があるaタグの内容をを正規表現で抜いています。
<br /><p class="v2_routeStationName"><span class="v2_linkIcon"><a href="../shibuya/index.html">渋谷</a></span></p>
続いてデータ整形行う
ここの手順はキャプチャの中で解説しながら一気に紹介します。
手順1の部分で作成したワークフローはこんな感じです。最終的に路線名・駅名・駅のページを取得できました。
手順2:取得した駅情報から、さらに駅の住所情報を取得
手順2では、先ほど取得した駅ページURL情報を元に、再度スクレイピングを実施して、駅の住所と利用者人数を取得していきます。手順としては1と殆ど同じですので、最後のポイントのみ説明していきたいと思います。
手順2で作成したワークフロー
最後のポイント:緯度経度取得用のURLを作成
駅の住所を取得できたら、最終的に緯度経度の情報を取得していきます。そのため、今回利用したCSISシンプルジオコーディング実験での緯度経度取得形式に合わせたURLを作成する必要があります。
・以下のルールでURLを作る
"http://geocode.csis.u-tokyo.ac.jp/cgi-bin/simple_geocode.cgi?charset=UTF8&addr=" + 住所
・フォーミュラツールで実装
※ここではURLに日本語が含まれてしまうのですが、実際にダウンロードツールでHTMLを取得しに行く際は、URLがデフォルトでUTF8にエンコードされる設定になっています。
こちらで手順2は終了です。
手順3:住所情報から、緯度経度を取得
手順2の最後のステップで作成したURLを元に、再びスクレイピングを行います。スクレイピングの手順としては同様なので割愛します。
手順3で作成したワークフロー
路線名・駅住所・緯度経度すべての情報が取得できました。
Tableauで可視化する前に、Alteryxでも結果を確認してみます。だいぶいい感じ!
手順4:緯度経度、路線情報を組み合わせてTableauで可視化
ダッシュボードの作成方法自体は、結構簡単なものになっております。後ほどTableau Publicのリンクも張っておきますのでそこから確認できますので、気になる方は確認してみてください。なので今回のTableauのダッシュボード作成で気にしたのは以下のポイント。
- 路線の凡例はそれぞれのカラーに近づける!
- ラベルはメトロカラーに!
ここだけはやっておかないと綺麗な路線図になりませんよね!?
そして完成したのがこちら!
丸の内線の中野坂上駅より先が二股になっている部分について、正しく表現で来ていないのですが、、今回はこのままで行きます。とはいえ、なんとも美しいマイ路線図です。素敵。。東京メトロは都内の多くの領域を走っているのが分かるので、やはり便利だと痛感しますね。
Tableau Public|東京メトロ路線図マップ
※パブリッシュ版はWEBページの埋め込みがうまく表示されず、削除しています
さいごに
なんだか当初の目的を忘れてしまいそうですが、今回はAlteryxでのWEBスクレイピングの方法について紹介しました。ひとつのやり方に過ぎないですが、是非参考になれば幸いです。